package practpl.cuatro;



import java.io.*;
import antlr.*;

public class Procesador {
	
	public static void main(String args[]) {
		try {
			System.out.println("Fichero fuente: " + args[1]);
			FileInputStream fis = new FileInputStream(args[1]);
			System.out.println("Lexer: " + args[0] + "\n");
			
			//ANALEX
			if (args[0].equals("Analex")) {
				Analex analex = new Analex(fis);
	//			analex.setTokenObjectClass("MiToken");
				Token token = analex.nextToken();
				while(token.getType() != Token.EOF_TYPE) {
					System.out.println(token);
					token = analex.nextToken();
				}
			}
			
			//ANALEX para codigos en C
			if (args[0].equals("AnalexC")) {
				AnalexC analexc = new AnalexC(fis);
				Token tokenc = analexc.nextToken();
				while(tokenc.getType() != Token.EOF_TYPE) {
					System.out.println(tokenc);
					tokenc = analexc.nextToken();
				}
			}			
			
			//ANALEX para codigos en XML
			if (args[0].equals("AnalexXML")) {
				AnalexXML analexml = new AnalexXML(fis);
				Token tokenxml = analexml.nextToken();
				while(tokenxml.getType() != Token.EOF_TYPE) {
					System.out.println(tokenxml);
					tokenxml = analexml.nextToken();
				}
			}	
			
			//ANALEX Para MiToken
			if (args[0].equals("AnalexMiToken")) {
				AnalexMiToken analexmt = new AnalexMiToken(fis);
				System.out.println(practpl.cuatro.MiToken.class.getName());
				analexmt.setTokenObjectClass(practpl.cuatro.MiToken.class.getName());
				analexmt.setFilename(args[1]);
				
				MiToken tokenmt = (MiToken) analexmt.nextToken();
				while(tokenmt.getType() != Token.EOF_TYPE) {
					System.out.println(tokenmt);
					tokenmt = (MiToken) analexmt.nextToken();
				}
			}
		
		} catch(ANTLRException ae) {
			System.err.println(ae.getMessage());
		} catch(FileNotFoundException fnfe) {
			System.err.println("No se encontró el fichero");
		}
	}
}